#ifndef __MY__HOT__
#define __MY__HOT__
#include"data.hpp"
#include"util.hpp"
#include<unistd.h>
#include<stdio.h>
extern cloud::DataManager * _data;
namespace cloud{
	class HotManager{
		private:
			std::string _back_dir;//文件储存路径
			std::string _pack_dir;//文件压缩路径
			std::string _packfile_suffix;
			int _hot_time;
			//遍历文件夹，对比热点时间，压缩文件，删除源文件
		public:
			HotManager(){
				Config *config=Config::GetInstance();
				_hot_time=config->GetHotTime();
				_packfile_suffix=config->GetPackFileSuffix();
				_back_dir=config->GetBackDir();
				_pack_dir=config->GetPackDir();
				//不创建目录的话会在遍历那里报错
				FileUtil tmp1(_pack_dir);
				FileUtil tmp2(_back_dir);
				tmp1.CreateDirectory();
				tmp2.CreateDirectory();
			}
			bool HotJudge(std::string filename){
				time_t cur=time(NULL);
				FileUtil fu(filename);
				time_t latime=fu.LastATime();
				if(cur-latime>_hot_time)
					return false;//非热点文件
				return true;
			}
			bool RunModule(){
				while(1){
					std::vector<std::string> arry;
					FileUtil fu(_back_dir);
					fu.ScanDirectory(&arry);
					for(auto a:arry){
						//遍历文件夹
						BackInfo bi;
						if(HotJudge(a)==true){
						//热点文件
						continue;
						}
						//非热点文件
						if(_data->GetOneByRealPath(a,&bi)==false){
							bi.NewBackInfo(a);
						}
						FileUtil fu(a);
						//压缩文件
						fu.Compress(bi._pack_path);
						//删除源文件，更新
						bi._pack_flag=true;
						_data->Updata(bi);
						fu.Remove();					
					}	
					usleep(1000);//防止循环太快占用资源
			
				}
				
			}		


};

}
#endif
